package com.marvels.product.param.dao;

import java.util.List;
import java.util.Map;

import com.marvels.product.param.dto.McptProduct;
import com.marvels.product.productmanage.dto.McptProductInfoDTO;
import com.marvels.product.productmanage.dto.McptProductMappedDto;

public interface McptProductMapper {


	McptProduct selectByPrimaryKey(Long productId);

	List<McptProduct> getListByParam(Map<String, Object> param);

	List<McptProduct> getPageInfoByVersion(Map<String, Object> param);

	void updateStatus(McptProduct dto);

	/**
	 * 平台费  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getPtFeeMapList();

	/**
	 * 杂费  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getMiscFeeMapList();

	/**
	 * 杂费  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getConsultFeeMapList();

	/**
	 * 管理费  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getMngFeeMapList();
	
	/**
	 * 提前结清费  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getPreFeeMapList();

	/**
	 * 滞纳金  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getLateFeeMapList();

	/**
	 * 违约金  code desc  键值对
	 * @return
	 */
	List<Map<String, String>> getPenaltyMapList();

	void deleteByPrimaryKey(Long productId);
	
	/**
	 * 批量更新产品小类参数
	 * @param dtoList
	 */
	void updateBatchItem(List<McptProduct> dtoList);
	
	/**
	 * 保存
	 * @param dto
	 */
	void save(McptProduct dto);


	List<Map<Integer, String>> getAmortMethodMapList();

	List<Map<Integer, String>> getRepaySeqMapList();

	/**根据产品小类code查询产品小类
	 * @author 娄凯琦
	 * @date 2018年5月8日  
	 * @param dto
	 * @return
	 */
    public McptProduct selectByProductCode(McptProduct dto);
    
    
    /**
     * 查询产品映射信息
     * @param McptProduct
     * @return
     */
    public List<McptProductMappedDto> selectProductMappedInfo(McptProductMappedDto mcptProductMappedDto);

    /**通过大类渠道、期数、评级等信息查询产品小类
     * @param mapped
     * @return
     */
    public List<McptProduct> selectProduct(McptProductMappedDto mapped);
    
    public McptProduct queryByProductType(String productType);
    
    /**
     * 查询产品资讯费率
     */
    public Map<String, Object> queryByConsultingFeeCode(String consultingFeeCode);
    
    /**
     * 查询产品类别信息
     * @param mcpdto
     * @return
     */
    public List<McptProductInfoDTO> selectProductInfo(McptProductInfoDTO mcpdto);
}